From 2d93dbc65a4342f1d0011485cacefa58584fbb44 Mon Sep 17 00:00:00 2001 From: "vhanquez@kneesa.uk.xensource.com" Date: Mon, 20 Feb 2006 17:06:36 +0000 Subject: [PATCH] alloc_netdev must be freed with free_netdev, not directly by kfree. Signed-off-by: Vincent Hanquez --- linux-2.6-xen-sparse/drivers/xen/netback/loopback.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c b/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c index 58a717e36f..03e6c29729 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c +++ b/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c @@ -137,10 +137,13 @@ static int __init make_loopback(int i) sprintf(dev_name, "vif0.%d", i); dev1 = alloc_netdev(sizeof(struct net_private), dev_name, ether_setup); + if (!dev1) + return err; + sprintf(dev_name, "veth%d", i); dev2 = alloc_netdev(sizeof(struct net_private), dev_name, ether_setup); - if ((dev1 == NULL) || (dev2 == NULL)) - goto fail; + if (!dev2) + goto fail_netdev2; loopback_construct(dev1, dev2); loopback_construct(dev2, dev1); @@ -169,8 +172,9 @@ static int __init make_loopback(int i) return 0; fail: - kfree(dev1); - kfree(dev2); + free_netdev(dev2); + fail_netdev2: + free_netdev(dev1); return err; } -- 2.30.2